The Internet is becoming a preferred method for distributing media files to end users. It is currently possible to download music or video to computers, cell phones, and practically any network capable device. Many portable media players and computers are equipped to connect to a network and play music, videos, and other multimedia files. The music, video files, and other multimedia files (hereinafter “media files”) can be stored locally on a media player, streamed, or downloaded from a server.
Streaming of data files or “streaming media” refers to technology that delivers content at a rate sufficient to present the media to a user at the originally anticipated playback speed without significant interruption. Streamed data may be stored in memory temporarily until the data is played back and then subsequently deleted. In most streaming systems, the user has the immediate satisfaction of viewing the requested content without waiting for the entire media file to completely download. However, the audio/video quality that can be received for streaming presentation is constrained by the available bandwidth of the network connection. Streaming may be used to deliver content on demand from previously recorded broadcasts or content from live broadcasts.
Streaming offers the advantage of immediate access to the content but tends to sacrifice quality in order to maintain the playback speed within the constraints of the available bandwidth. The opportunity for a user to select different content for viewing on an ad hoc basis is provided by streaming, but streaming is not currently able to fully support rewind, fast forward, and direct seek operations functions. Streaming is also vulnerable to network failures or congestion.
Generally, three basic challenges exist with regard to data streaming over a network (e.g., the Internet) that has a varying amount of data loss.
The first challenge is reliability. Most streaming solutions use a TCP connection or “virtual circuit” for transmitting data. A TCP connection provides a guaranteed delivery mechanism so that data sent from one endpoint will be delivered to the destination, even if portions are lost and retransmitted. When a network adapter detects delays or losses in a TCP connection, the adapter “backs off” from transmission attempts for a moment and then gradually resumes the original transmission pace. This behavior is an attempt to alleviate the perceived congestion. One measure of reliability is “packet loss” measured as a percentage of all the packets transmitted from one host to another that were not received.
The second challenge to data transport is efficiency. Efficiency refers to how well the user's available bandwidth is used for delivery of the content stream. When a TCP connection is suffering reliability problems, then a loss of bandwidth utilization can result.
The third challenge is latency. Latency is a measure of the time interval between when a client's request is issued and the response data begins to arrive at the client. This metric is affected by the network connection's data transmission rate, reliability, efficiency and the processing time required by the origin to prepare the response.
The challenges described above are multiplied when multiple software video players are used in the same local area or home network. Since streaming video is traditionally considered to be bandwidth intensive, having multiple simultaneous video streaming sessions sharing the same network resources can create latency, congestion or other adverse effects, resulting in poor playback experiences for users.